#pragma once
#include "interfaces.h"
#include "AssetData.h"
#include "Geometry.h"
#include "RandomEngine.h"
#include <vector>
#include <list>

class RE_Mesh : public AssetData
{
public:
	RE_Mesh();
	~RE_Mesh();
//----------------------------------------------------------------------------------------------------------
//Mesh External Components
//----------------------------------------------------------------------------------------------------------
	//add material asset ptr here

//----------------------------------------------------------------------------------------------------------
//Mesh Internal Components
//----------------------------------------------------------------------------------------------------------
	static const AssetType m_MeshType;
	virtual const AssetType & GetAssetType()
	{
		return m_MeshType;
	}

	virtual bool Restore(); // basically, making sure the asset data is loaded and ready for use

	virtual bool Release();
	union
	{
		LPDIRECT3DVERTEXBUFFER9 m_VB9;
		//LPDIRECT3DVERTEXBUFFER11 m_VB11;
	};
	/*
	union
	{
		LPDIRECT3DINDEXBUFFER9 m_IB9;
		//LPDIRECT3DINDEXBUFFER11 m_IB11;
	};
	*/
	std::vector<VTX_POSITION_NORMAL_TEX> m_Vertices;
	AssetDataPtr m_Material;
	
};